TARGET := data_can_modbus
VER ?= release

LDFLAGS := -lm -pthread 

#------------------以下选择性修改------------------#
#编译器链接参数(根据实际项目手动修改),arm-linux-gnueabi-,交叉编译器选用arm-linux-gnueabihf-,linux虚拟机下为空
ARCH ?=armhf
# 根据架构适应编译器
ifeq ($(ARCH), armhf)
CROSS_COMPILE ?= arm-linux-gnueabihf-
endif

#设置Debug/Release的编译文件输出路径,默认make编译Debug版;如果编译release版,make ver=release
TOPDIR := $(shell pwd)
ifeq ($(VER), debug)
#DEBUG版本的编译器参数(根据实际项目手动修改)，如-Wall -O2 -g -Ddebug
CFLAGS += -Wall -O0 -g -ggdb -fno-omit-frame-pointer -Ddebug
COMPILEDIR := $(TOPDIR)/Debug
else
CFLAGS += -Wall -O2
COMPILEDIR := $(TOPDIR)/Release
endif

#根据链接选项指定编译器
AS      = $(CROSS_COMPILE)as
LD      = $(CROSS_COMPILE)ld
CC      = $(CROSS_COMPILE)gcc
CPP     = $(CROSS_COMPILE)g++
AR      = $(CROSS_COMPILE)ar
NM      = $(CROSS_COMPILE)nm
STRIP   = $(CROSS_COMPILE)strip

#设置可执行文件的输出路径
TARGETDIR := $(COMPILEDIR)

SRCS := $(shell find . -name "*.c")
OBJS = $(SRCS:%.c=%.o)

all:$(OBJS)
	$(CC) -o $(TARGETDIR)/$(TARGET) $(OBJS) $(CFLAGS) $(LDFLAGS) $(LDPATH)
	@echo "\033[1;32mBuild Finished. Binary:$(TARGETDIR)/$(TARGET)\033[0m" 
	
$(OBJS):%.o:%.c
	mkdir -p $(COMPILEDIR)
	mkdir -p $(TARGETDIR)
	$(CC) -c $(CFLAGS) $(LDFLAGS) $< -o $@

#清除规则(无需修改)
clean:
	-rm -f $(shell find . -name "*.o")
	-rm -rf $(TARGETDIR)/*